<!DOCTYPE html>
<html>
  <head>
    <title>Keyboard test</title>
  </head>
  <body>
    <textarea></textarea>
    <script>
      window.result = "";
      let textarea = document.querySelector('textarea');
      textarea.focus();
      textarea.addEventListener('keydown', event => {
        log('Keydown:', event.key, event.code, getLocation(event), modifiers(event));
      });
      textarea.addEventListener('keypress', event => {
        log('Keypress:', event.key, event.code, getLocation(event), event.charCode, modifiers(event));
      });
      textarea.addEventListener('keyup', event => {
        log('Keyup:', event.key, event.code, getLocation(event), modifiers(event));
      });
      function modifiers(event) {
        let m = [];
        if (event.altKey)
          m.push('Alt')
        if (event.ctrlKey)
          m.push('Control');
        if (event.shiftKey)
          m.push('Shift')
        return '[' + m.join(' ') + ']';
      }
      function getLocation(event) {
        switch (event.location) {
          case KeyboardEvent.DOM_KEY_LOCATION_STANDARD: return 'STANDARD';
          case KeyboardEvent.DOM_KEY_LOCATION_LEFT: return 'LEFT';
          case KeyboardEvent.DOM_KEY_LOCATION_RIGHT: return 'RIGHT';
          case KeyboardEvent.DOM_KEY_LOCATION_NUMPAD: return 'NUMPAD';
          default: return 'Unknown: ' + event.location;
        };
      }
      function log(...args) {
        console.log.apply(console, args);
        result += args.join(' ') + '\n';
      }
      function getResult() {
        let temp = result.trim();
        result = "";
        return temp;
      }
    </script>
  </body>
</html>